﻿<%@page import="language.TextHandler"%>
<%@page import="language.Languages"%>
<%@page import="nftrainer.helper.NFMap"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<jsp:useBean id="c" scope="session" class="nftrainer.Controller"/>
<jsp:useBean id="textHandler" scope="session" class="language.TextHandler"/>
Hallo 3NFTrainer-Nutzer!<br /><br />
<%
c.start(textHandler);

out.println(c.getTask()+"<br /><br />");
HashMap<Integer, String[][]> map;
int count = 0;
List<String> list;
List<NFMap> list2;
NFMap nfmap;
while (!c.taskCompleted()) {
	out.print("<br />-------------------------------------------------------------------------<br />");
	map = c.getActualTaskTable();
	int size = map.size();
	for (int n = 0; n < size; n++) {
		String[][] table = map.get(n);
		for (int i = 0; i < table.length; i++) {
			for (int j = 0; j < table[0].length; j++)
				out.print(table[i][j]+"|");
			out.println("<br />");
		}
		out.println("<br />");
	}
	
	out.println(c.getActualSubtask()+"<br />");
	
	switch (count) {
	case 0:
		out.println("Nutzereingabe: false<br />");
		out.println(c.compareUserSolution(false)+"<br /><br />");
		break;
	case 1:
		list = new ArrayList<String>();
		list.add("DIAGNOSE");
		list.add("BEHANDLUNGSTAG");
		list.add("DIAGNOSE_BESCHREIBUNG");
		out.println("Nutzereingabe: "+list+"<br />");
		out.println(c.compareUserSolution(list)+"<br /><br />");
		break;
	case 2:
		list2 = new ArrayList<NFMap>();
		nfmap = new NFMap();
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("DIAGNOSE_BESCHREIBUNG");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToKeys("BEHANDLUNGSTAG");
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("THERAPIE");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("KK_NR");
		nfmap.addToValues("KK_NAME");
		nfmap.addToValues("KK_ADR");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToValues("P_ADR");
		nfmap.addToValues("KK_ADR");
		nfmap.addToValues("GEB_TAG");
		nfmap.addToValues("KK_NR");
		nfmap.addToValues("P_TEL");
		nfmap.addToValues("KK_NAME");
		list2.add(nfmap);
		out.println("Nutzereingabe: "+list2+"<br />");
		out.println(c.compareUserSolution(list2)+"<br /><br />");
		break;
	case 3:
		list = new ArrayList<String>();
		list.add("PATIENT");
		list.add("BEHANDLUNGSTAG");
		list.add("DIAGNOSE");
		out.println("Nutzereingabe: "+list+"<br />");
		out.println(c.compareUserSolution(list)+"<br /><br />");
		break;
	case 4:
		list2 = new ArrayList<NFMap>();
		nfmap = new NFMap();
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("DIAGNOSE_BESCHREIBUNG");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToKeys("BEHANDLUNGSTAG");
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("THERAPIE");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToValues("P_ADR");
		nfmap.addToValues("KK_ADR");
		nfmap.addToValues("GEB_TAG");
		nfmap.addToValues("KK_NR");
		nfmap.addToValues("P_TEL");
		nfmap.addToValues("KK_NAME");
		list2.add(nfmap);
		out.println("Nutzereingabe: "+list2+"<br />");
		out.println(c.compareUserSolution(list2)+"<br /><br />");
		break;
	case 5:
		list2 = new ArrayList<NFMap>();
		nfmap = new NFMap();
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("DIAGNOSE_BESCHREIBUNG");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToKeys("BEHANDLUNGSTAG");
		nfmap.addToKeys("DIAGNOSE");
		nfmap.addToValues("THERAPIE");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("KK_NR");
		nfmap.addToValues("KK_NAME");
		nfmap.addToValues("KK_ADR");
		list2.add(nfmap);
		
		nfmap = new NFMap();
		nfmap.addToKeys("PATIENT");
		nfmap.addToValues("P_ADR");
		nfmap.addToValues("GEB_TAG");
		nfmap.addToValues("KK_NR");
		nfmap.addToValues("P_TEL");
		list2.add(nfmap);
		out.println("Nutzereingabe: "+list2+"<br />");
		out.println(c.compareUserSolution(list2)+"<br /><br />");
		break;
	default:
		break;
	}

	out.println(c.getSolutionAsString()+"<br /><br />");
	
	map = c.getSolutionTaskTable();
	size = map.size();
	for (int n = 0; n < size; n++) {
		String[][] table = map.get(n);
		for (int i = 0; i < table.length; i++) {
			for (int j = 0; j < table[0].length; j++)
				out.print(table[i][j]+"|");
			out.println("<br />");
		}
		out.println("<br />");
	}
	c.next();
	count++;
}
/*
out.println(c.getActualSubtask()+"<br />");

out.println(c.getSolutionAsString()+"<br /><br />");
c.next();

out.println(c.getActualSubtask()+"<br />");

out.println(c.getSolutionAsString()+"<br /><br />");
c.next();

out.println(c.getActualSubtask()+"<br />");

out.println(c.getSolutionAsString()+"<br /><br />");
c.next();

out.println(c.getActualSubtask()+"<br />");

out.println(c.getSolutionAsString()+"<br /><br />");
c.next();

out.println(c.getActualSubtask()+"<br />");

out.println(c.getSolutionAsString()+"<br /><br />");
c.next();

if (!t.isFirstNF()) {
	out.println("<br />"+t.getNextSubtask(1)+"<br />");
	out.println(t.getNotFirstNFColumns()+"<br />");
}
out.println("<br />"+t.getNextSubtask(2)+"<br />");
for (int i = 0; i < t.getFunctional().size(); i++) {
	out.println(t.getFunctional().get(i).getKeys()+":"+t.getFunctional().get(i).getValues()+"<br />");
}
out.println("<br />"+t.getNextSubtask(3)+"<br />");
out.println(t.getPrimaryKey()+"<br />");
out.println("<br />"+t.getNextSubtask(4)+"<br />");
for (int i = 0; i < t.getSecondNF().size(); i++) {
	out.println(t.getSecondNF().get(i).getKeys()+":"+t.getSecondNF().get(i).getValues()+"<br />");
}
out.println("<br />"+t.getNextSubtask(5)+"<br />");
for (int i = 0; i < t.getThirdNF().size(); i++) {
	out.println(t.getThirdNF().get(i).getKeys()+":"+t.getThirdNF().get(i).getValues()+"<br />");
}
out.println("<br />"+"0. NF"+"<br />");
for (int i = 0; i < t.getTaskTable().get(0).length; i++) {
	for (int j = 0; j < t.getTaskTable().get(0)[0].length; j++)
		out.print(t.getTaskTable().get(0)[i][j]+"|");
	out.println("<br />");
}
out.println("<br />"+"1. NF"+"<br />");
for (int i = 0; i < t.getTaskTable1NF().get(0).length; i++) {
	for (int j = 0; j < t.getTaskTable1NF().get(0)[0].length; j++)
		out.print(t.getTaskTable1NF().get(0)[i][j]+"|");
	out.println("<br />");
}
out.println("<br />"+"2. NF"+"<br />");
for (int n = 0; n < t.getTaskTables2NF().size(); n++) {
	for (int i = 0; i < t.getTaskTables2NF().get(n).length; i++) {
		for (int j = 0; j < t.getTaskTables2NF().get(n)[0].length; j++)
			out.print(t.getTaskTables2NF().get(n)[i][j]+"|");
		out.println("<br />");
	}
	out.println("<br />");
}
out.println("<br />"+"3. NF"+"<br />");
for (int n = 0; n < t.getTaskTables3NF().size(); n++) {
	for (int i = 0; i < t.getTaskTables3NF().get(n).length; i++) {
		for (int j = 0; j < t.getTaskTables3NF().get(n)[0].length; j++)
			out.print(t.getTaskTables3NF().get(n)[i][j]+"|");
		out.println("<br />");
	}
	out.println("<br />");
}*/
%>